home *** CD-ROM | disk | FTP | other *** search
/ Video Toaster 4.0 / Video Toaster v4.0.iso / arexx / modeler / pointsep.lwm < prev    next >
Text File  |  1993-12-13  |  1KB  |  57 lines

  1. /* CMD: Point Separation
  2.  *
  3.  * By Arnie Cachelin © 1993 NewTek Inc.
  4.  * Wed Sep 15 1993
  5.  */
  6.     mxx="LWModelerARexx.port"
  7.     signal on error
  8.     signal on syntax
  9.   numeric digits 5
  10.     mxx_add = addlib(mxx,0)
  11.     call addlib("rexxmathlib.library",0,-30,0)
  12.     call main
  13.     if (mxx_add) then call remlib(mxx)
  14.     exit
  15.  
  16.     syntax:
  17.     error:
  18.     t=Notify(1,'!Rexx Script Error','@'ErrorText(rc),'Line 'SIGL)
  19.     if (mxx_add) then call remlib(mxx)
  20.     exit
  21.  
  22.  
  23. main:
  24.   call sel_mode(USER)
  25.   c=xfrm_begin()
  26.   if c~=1 then do
  27.     v1=xfrm_getpos(1)
  28.     v2=xfrm_getpos(2)
  29.     dx=word(v2,1) - word(v1,1)
  30.     dy=word(v2,2) - word(v1,2)
  31.     dz=word(v2,3) - word(v1,3)
  32.     v=dx dy dz
  33.     call Notify(1,"!Point Separation:",v,"Distance: "Magnitude(v))
  34.     end
  35.   else call Notify(1,"!Oops, only one point selected!")
  36.   return
  37.  
  38. Magnitude: PROCEDURE
  39.   arg v
  40.   return(sqrt(Dot(v,v)))
  41.  
  42. Dot: PROCEDURE  /* vector dot product */
  43.   arg v1,v2
  44.   S=0
  45.   do i=1 to 3
  46.     S=S+word(v1,i)*word(v2,i)
  47.     end
  48.   return S
  49.  
  50. Dist: PROCEDURE
  51.   arg v1,v2
  52.   S=0
  53.   do i=1 to 3
  54.     S=S + (word(v2,i) - word(v1,i))^2
  55.     end
  56.   return sqrt(S)
  57.